function createplot = createplot(timeframe)
timeListFB = timeframe.(timeframe.Properties.DimensionNames{1});
timsInSeconds = seconds(timeListFB - timeListFB(1));
FBT = timetable2table(timeframe);
FFB = cat(2,timsInSeconds,acc);
lgd = legend({'x', 'y', 'z'});
set(lgd, 'FontSize', 14);
set(lgd, 'Location', 'SouthWest');
function Accel = Accel(Acceleration,plotname)
timeList = Acceleration.(Acceleration.Properties.DimensionNames{1});
timsInSeconds = seconds(timeList - timeList(1));
acc1 = timetable2table(Acceleration);
accel = cat(2,timsInSeconds,acc);
y = [x(1) + x(2); x(1:end-2) + x(2:end-1) + x(3:end); x(end-1) + x(end)]/3;
Fs = 1/(accel(2,1)-accel(1,1));
h = plot(accel(:,1)-accel(1,1), y);
h = plot(accel(:,1)-accel(1,1), x, '--');
lgd = legend({'Filtered', 'Raw'});
set(lgd, 'FontSize', 14);
set(lgd, 'Location', 'SouthWest');
h = ylabel(strcat(axistype,' acceleration m/s^2'));
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
h = plot(f, abs(fftshift(fft(x))));
lgd = legend({'Filtered', 'Raw'});
set(lgd, 'FontSize', 14);
h = xlabel('Frequency (Hz)');
h = ylabel('Amplitude (m/s^2)');
function [x,y,Fs,N] = FilterFreq(Acceleration,axis)
timeList = Acceleration.(Acceleration.Properties.DimensionNames{1});
timsInSeconds = seconds(timeList - timeList(1));
acc1 = timetable2table(Acceleration);
accel = cat(2,timsInSeconds,acc);
y = [x(1) + x(2); x(1:end-2) + x(2:end-1) + x(3:end); x(end-1) + x(end)]/3;
Fs = 1/(accel(2,1)-accel(1,1));
function Compare = Compare(Acc1,Acc2,Acc3,Acc4,Acc5,axis)
[x,y,Fs,N] = FilterFreq(Acc1,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
[x,y,Fs,N] = FilterFreq(Acc2,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
[x,y,Fs,N] = FilterFreq(Acc3,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
[x,y,Fs,N] = FilterFreq(Acc4,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
[x,y,Fs,N] = FilterFreq(Acc5,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
lgd = legend({'1', '2','3','4','5'});
set(lgd, 'FontSize', 14);
h = xlabel('Frequency (Hz)');
h = ylabel('Amplitude (m/s^2)');
function [accel] = todouble(Acceleration)
timeList = Acceleration.(Acceleration.Properties.DimensionNames{1});
timsInSeconds = seconds(timeList - timeList(1));
acc1 = timetable2table(Acceleration);
accel = cat(2,timsInSeconds,acc);
function fixdelayvis = fixdelayvis(Acc1, Acc2, Acc3, Acc4, Acc5, axis)
[x,y,Fs,N] = FilterFreq(Acc1, axis);
sx1 = cat(2,s1(:,1)-s1(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc2, axis);
sx2 = cat(2,s2(:,1)-s2(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc3, axis);
sx3 = cat(2,s3(:,1)-s3(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc4, axis);
sx4 = cat(2,s4(:,1)-s4(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc5, axis);
sx5 = cat(2,s5(:,1)-s5(1,1),y);
sxa1 = alignsignals(sx1(:,2),sx5(:,2));
sxa2 = alignsignals(sx2(:,2),sx5(:,2));
sxa3 = alignsignals(sx3(:,2),sx5(:,2));
sxa4 = alignsignals(sx4(:,2),sx5(:,2));
function [sxa1,sxa2,sxa3,sxa4,sxa5] = fixdelayval (Acc1, Acc2, Acc3, Acc4, Acc5, axis)
[x,y,Fs,N] = FilterFreq(Acc1, axis);
sx1 = cat(2,s1(:,1)-s1(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc2, axis);
sx2 = cat(2,s2(:,1)-s2(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc3, axis);
sx3 = cat(2,s3(:,1)-s3(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc4, axis);
sx4 = cat(2,s4(:,1)-s4(1,1),y);
[x,y,Fs,N] = FilterFreq(Acc5, axis);
sx5 = cat(2,s5(:,1)-s5(1,1),y);
sxa1 = alignsignals(sx1(:,2),sx5(:,2));
sxa2 = alignsignals(sx2(:,2),sx5(:,2));
sxa3 = alignsignals(sx3(:,2),sx5(:,2));
sxa4 = alignsignals(sx4(:,2),sx5(:,2));
function [fitresult, average] = fitdata(Acc1, Acc2, Acc3, Acc4, Acc5, axis)
[sxa1,sxa2,sxa3,sxa4,sxa5] = fixdelayval(Acc1, Acc2, Acc3, Acc4, Acc5, axis);
sizes = [size(sxa1),size(sxa2),size(sxa3),size(sxa4),size(sxa5)];
sxa1 = transpose([transpose(sxa1),zeros(1,big - length(transpose(sxa1)))]);
sxa2 = transpose([transpose(sxa2),zeros(1,big - length(transpose(sxa2)))]);
sxa3 = transpose([transpose(sxa3),zeros(1,big - length(transpose(sxa3)))]);
sxa4 = transpose([transpose(sxa4),zeros(1,big - length(transpose(sxa4)))]);
sxa5 = transpose([transpose(sxa5),zeros(1,big - length(transpose(sxa5)))]);
% sct1 = cat(2,(transpose([1:length(transpose(sxa1))])),sxa1);
% sct2 = cat(2,(transpose([1:length(transpose(sxa2))])),sxa2);
% sct3 = cat(2,(transpose([1:length(transpose(sxa3))])),sxa3);
% sct4 = cat(2,(transpose([1:length(transpose(sxa4))])),sxa4);
% sct5 = cat(2,(transpose([1:length(transpose(sxa5))])),sxa5);
% scatter = [sct1;sct2;sct3;sct4;sct5];
full = cat(5,sxa1,sxa2,sxa3,sxa4,sxa5);
endpoint = transpose([1:length(transpose(average))]);
[fitresult, gof] = createFits(endpoint, average)
function [fitresult, gof] = createFits(endpoint, average)
% Initialize arrays to store fits and goodness-of-fit.
fitresult = cell( 2, 1 );
gof = struct( 'sse', cell( 2, 1 ), ...
'rsquare', [], 'dfe', [], 'adjrsquare', [], 'rmse', [] );
[xData, yData] = prepareCurveData( endpoint, average );
% Set up fittype and options.
ft = fittype( 'gauss3' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Lower = [-Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0];
opts.StartPoint = [15.8340728 0.375101414394585 0.0808359208056775 7.82525692645652 0.595749305214929 0.115430645857715 4.34519412766935 1.12530424318375 0.208577206346505];
[fitresult{2}, gof(2)] = fit( xData, yData, ft, opts );
figure( 'Name', 'Fit2' );
h = plot( fitresult{2}, xData, yData );
legend( h, 'average vs. endpoint', 'Fit2', 'Location', 'NorthEast', 'Interpreter', 'none' );
xlabel( 'endpoint', 'Interpreter', 'none' );
ylabel( 'average', 'Interpreter', 'none' );
function R2 = calculateR2(z,z_est)
function testfall = testfall(FL1F,FL2F,FL3F,FL4F,FL5F,FR1F,FR2F,FR3F,FR4F,FR5F,FF1F,FF2F,FF3F,FF4F,FF5F,FB1F,FB2F,FB3F,FB4F,FB5F,Timetable)
[Lfitresultx,Laveragex] = fitdata(FL1F,FL2F,FL3F,FL4F,FL5F,'x');
[Lfitresulty,Laveragey] = fitdata(FL1F,FL2F,FL3F,FL4F,FL5F,'y');
[Lfitresultz,Laveragez] = fitdata(FL1F,FL2F,FL3F,FL4F,FL5F,'z');
[Rfitresultx,Raveragex] = fitdata(FR1F,FR2F,FR3F,FR4F,FR5F,'x');
[Rfitresulty,Raveragey] = fitdata(FR1F,FR2F,FR3F,FR4F,FR5F,'y');
[Rfitresultz,Raveragez] = fitdata(FR1F,FR2F,FR3F,FR4F,FR5F,'z');
[Ffitresultx,Faveragex] = fitdata(FF1F,FF2F,FF3F,FF4F,FF5F,'x');
[Ffitresulty,Faveragey] = fitdata(FF1F,FF2F,FF3F,FF4F,FF5F,'y');
[Ffitresultz,Faveragez] = fitdata(FF1F,FF2F,FF3F,FF4F,FF5F,'z');
[Bfitresultx,Baveragex] = fitdata(FB1F,FB2F,FB3F,FB4F,FB5F,'x');
[Bfitresulty,Baveragey] = fitdata(FB1F,FB2F,FB3F,FB4F,FB5F,'y');
[Bfitresultz,Baveragez] = fitdata(FB1F,FB2F,FB3F,FB4F,FB5F,'z');
accel = todouble(Timetable);
[x,y,Fs,N] = FilterFreq(Timetable, 'x');
xF = cat(2,x0(:,1)-x0(1,1),y);
[x,y,Fs,N] = FilterFreq(Timetable, 'y');
yF = cat(2,y0(:,1)-y0(1,1),y);
[x,y,Fs,N] = FilterFreq(Timetable, 'z');
zF = cat(2,z0(:,1)-z0(1,1),y);
AlignedxL = alignsignals(xF(:,2),Laveragex(:,1));
AlignedyL = alignsignals(yF(:,2),Laveragey(:,1));
AlignedzL = alignsignals(zF(:,2),Laveragez(:,1));
AlignedxR = alignsignals(xF(:,2),Raveragex(:,1));
AlignedyR = alignsignals(yF(:,2),Raveragey(:,1));
AlignedzR = alignsignals(zF(:,2),Raveragez(:,1));
AlignedxF = alignsignals(xF(:,2),Faveragex(:,1));
AlignedyF = alignsignals(yF(:,2),Faveragey(:,1));
AlignedzF = alignsignals(zF(:,2),Faveragez(:,1));
AlignedxB = alignsignals(xF(:,2),Baveragex(:,1));
AlignedyB = alignsignals(yF(:,2),Baveragey(:,1));
AlignedzB = alignsignals(zF(:,2),Baveragez(:,1));
FL = r2v1(AlignedxL,Laveragex)+r2v1(AlignedyL,Laveragey)+r2v1(AlignedzL,Laveragez)
FR = r2v1(AlignedxR,Raveragex)+r2v1(AlignedyR,Raveragey)+r2v1(AlignedzR,Raveragez)
FF = r2v1(AlignedxF,Faveragex)+r2v1(AlignedyF,Faveragey)+r2v1(AlignedzF,Faveragez)
FB = r2v1(AlignedxB,Baveragex)+r2v1(AlignedyB,Baveragey)+r2v1(AlignedzB,Baveragez)
if FL < 0 && FR <0 && FF <0 && FB <0
elseif max([FL,FR,FF,FB]) == FL
elseif max([FL,FR,FF,FB]) == FR
elseif max([FL,FR,FF,FB]) == FF
elseif max([FL,FR,FF,FB]) == FB
function [r2v1] = r2v1(values,values2)
big = max(size(values),size(values2));
xL = transpose([transpose(values),zeros(1,big(:,1) - length(transpose(values)))]);
xL2 = transpose([transpose(values2),zeros(1,big(:,1) - length(transpose(values2)))]);
r2v1 = calculateR2(xL, xL2);